package _4泛型中super和extends;

import java.util.*;

public class TestDemo {

	public static void main(String[] args) {
		
		
		// Animal >  Cat  > BossCat
		
		// 1. ? super T  向上限定 
		// 必须是该类的容器，或者是该类的父类的容器
		List<? super Cat> l1 = new ArrayList<Cat>();
		List<? super Cat> l2 = new ArrayList<Animal>();
		
//		List<? super Cat> l3 = new ArrayList<BossCat>(); // 报错
		
		
		// 比如
//		List<Animal> l7 = new ArrayList<Animal>();
//		List<Cat> l8 = new ArrayList<Cat>();
//		Collections.addAll(l7, new Cat(),new BossCat(),new Dog());
//		Collections.addAll(l8, new Cat(),new BossCat(),new Dog());
		
		// 2. ? extends T 向下限定 
		// 是该类的容器，或者是该类的父类的容器
		List<? extends Cat> l4 = new ArrayList<Cat>();
//		List<? extends Cat> l5 = new ArrayList<Animal>();// 报错
		List<? extends Cat> l6 = new ArrayList<BossCat>(); 
		
		
		List<Cat> l8 = new ArrayList<Cat>();
		List<BossCat> l9 = new ArrayList<BossCat>();
		l8.addAll(l9);
		
		
	}

}